ShadowSocks 是个很好的工具,它自带 PAC 模式和全局模式。

不过这个全局模式并不能完全让整台电脑的所有网络访问全部通过代理进行,比如终端命令就不可以。我打开全局代理后,然后在终端执行 curl ip.cn 命令,结果显示检查到的 IP 地址依然是本机真实的公网 IP:

1
2
➜  ~ curl ip.cn
当前 IP:122.225.224.218 来自:浙江省杭州市 电信

要让 shell 也使用代理,可以执行一下命令来设置代理:

1
2
# 注意下面的端口号不一定是 1086
export ALL_PROXY=socks5://127.0.0.1:1086

上面我使用的端口号是 1086,这是因为我的 ShadowSocks 客户端的偏好设置中如下所示的设置项是 1086:

但是每次都执行上面的 export 命令很麻烦,那么可以在 shell 的配置文件中设置 alias:

1
2
3
4
5
# enable proxy
alias proxy="export ALL_PROXY=socks5://127.0.0.1:1086"

# disable proxy
alias unproxy="unset ALL_PROXY"

前两天我发现在家的时候,Android Studio 无法访问 Google 的 maven 仓库,即使我开全局代理也不行,即使我在 terminal 中按前面方法设置 proxy 并且使用 gradle 命令来构建也不行。

为此,我找到了向 gradle 设置 proxy 的方法,那就是在项目的 local.properties 文件(之所以选这个文件是因为这个文件一般是不纳入 git 管理的,所以我可以随便自定义地修改)加入下面的设置,即可让 gradle 使用代理:

1
org.gradle.jvmargs=-Xmx4536m -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=1086

上面的端口号和前面的方法中是一致的。